In this notebook, we explore the UrbanSound8K dataset, which is a collection of urban sounds categorized into different classes.
!pip install librosa
Requirement already satisfied: librosa in c:\users\joao silva\appdata\roaming\python\python311\site-packages (0.10.1) Requirement already satisfied: audioread>=2.1.9 in c:\users\joao silva\appdata\roaming\python\python311\site-packages (from librosa) (3.0.1) Requirement already satisfied: numpy!=1.22.0,!=1.22.1,!=1.22.2,>=1.20.3 in c:\users\joao silva\anaconda3\lib\site-packages (from librosa) (1.24.4) Requirement already satisfied: scipy>=1.2.0 in c:\users\joao silva\anaconda3\lib\site-packages (from librosa) (1.11.1) Requirement already satisfied: scikit-learn>=0.20.0 in c:\users\joao silva\anaconda3\lib\site-packages (from librosa) (1.3.0) Requirement already satisfied: joblib>=0.14 in c:\users\joao silva\anaconda3\lib\site-packages (from librosa) (1.2.0) Requirement already satisfied: decorator>=4.3.0 in c:\users\joao silva\anaconda3\lib\site-packages (from librosa) (5.1.1) Requirement already satisfied: numba>=0.51.0 in c:\users\joao silva\anaconda3\lib\site-packages (from librosa) (0.57.1) Requirement already satisfied: soundfile>=0.12.1 in c:\users\joao silva\appdata\roaming\python\python311\site-packages (from librosa) (0.12.1) Requirement already satisfied: pooch>=1.0 in c:\users\joao silva\appdata\roaming\python\python311\site-packages (from librosa) (1.8.0) Requirement already satisfied: soxr>=0.3.2 in c:\users\joao silva\appdata\roaming\python\python311\site-packages (from librosa) (0.3.7) Requirement already satisfied: typing-extensions>=4.1.1 in c:\users\joao silva\anaconda3\lib\site-packages (from librosa) (4.7.1) Requirement already satisfied: lazy-loader>=0.1 in c:\users\joao silva\anaconda3\lib\site-packages (from librosa) (0.2) Requirement already satisfied: msgpack>=1.0 in c:\users\joao silva\anaconda3\lib\site-packages (from librosa) (1.0.3) Requirement already satisfied: llvmlite<0.41,>=0.40.0dev0 in c:\users\joao silva\anaconda3\lib\site-packages (from numba>=0.51.0->librosa) (0.40.0) Requirement already satisfied: platformdirs>=2.5.0 in c:\users\joao silva\anaconda3\lib\site-packages (from pooch>=1.0->librosa) (3.10.0) Requirement already satisfied: packaging>=20.0 in c:\users\joao silva\anaconda3\lib\site-packages (from pooch>=1.0->librosa) (23.1) Requirement already satisfied: requests>=2.19.0 in c:\users\joao silva\anaconda3\lib\site-packages (from pooch>=1.0->librosa) (2.31.0) Requirement already satisfied: threadpoolctl>=2.0.0 in c:\users\joao silva\anaconda3\lib\site-packages (from scikit-learn>=0.20.0->librosa) (2.2.0) Requirement already satisfied: cffi>=1.0 in c:\users\joao silva\anaconda3\lib\site-packages (from soundfile>=0.12.1->librosa) (1.15.1) Requirement already satisfied: pycparser in c:\users\joao silva\anaconda3\lib\site-packages (from cffi>=1.0->soundfile>=0.12.1->librosa) (2.21) Requirement already satisfied: charset-normalizer<4,>=2 in c:\users\joao silva\anaconda3\lib\site-packages (from requests>=2.19.0->pooch>=1.0->librosa) (2.0.4) Requirement already satisfied: idna<4,>=2.5 in c:\users\joao silva\anaconda3\lib\site-packages (from requests>=2.19.0->pooch>=1.0->librosa) (3.4) Requirement already satisfied: urllib3<3,>=1.21.1 in c:\users\joao silva\anaconda3\lib\site-packages (from requests>=2.19.0->pooch>=1.0->librosa) (1.26.16) Requirement already satisfied: certifi>=2017.4.17 in c:\users\joao silva\anaconda3\lib\site-packages (from requests>=2.19.0->pooch>=1.0->librosa) (2023.7.22)
# Libraries
import os
import pandas as pd
import matplotlib.pyplot as plt
import numpy as np
import IPython as IP
import IPython.display as ipd
import struct
import librosa
import librosa.display
# Diretory
os.chdir(r'Downloads/')
# Paths
urbansound8_path = os.path.abspath('./UrbanSound8K' )
metadata_path = os.path.join(urbansound8_path, 'metadata/UrbanSound8K.csv')
audio_path = os.path.join(metadata_path, 'audio')
# Load dataframe
metadata = pd.read_csv(metadata_path)
# Visualize it
metadata.head()
| slice_file_name | fsID | start | end | salience | fold | classID | class | |
|---|---|---|---|---|---|---|---|---|
| 0 | 100032-3-0-0.wav | 100032 | 0.0 | 0.317551 | 1 | 5 | 3 | dog_bark |
| 1 | 100263-2-0-117.wav | 100263 | 58.5 | 62.500000 | 1 | 5 | 2 | children_playing |
| 2 | 100263-2-0-121.wav | 100263 | 60.5 | 64.500000 | 1 | 5 | 2 | children_playing |
| 3 | 100263-2-0-126.wav | 100263 | 63.0 | 67.000000 | 1 | 5 | 2 | children_playing |
| 4 | 100263-2-0-137.wav | 100263 | 68.5 | 72.500000 | 1 | 5 | 2 | children_playing |
metadata.shape
(8732, 8)
# Checking for null values
metadata.isnull().sum()
slice_file_name 0 fsID 0 start 0 end 0 salience 0 fold 0 classID 0 class 0 dtype: int64
# Class distribution
metadata['class'].value_counts()
class dog_bark 1000 children_playing 1000 air_conditioner 1000 street_music 1000 engine_idling 1000 jackhammer 1000 drilling 1000 siren 929 car_horn 429 gun_shot 374 Name: count, dtype: int64
# Plotting the bar chart for the previous class distribution
class_distribution = metadata['class'].value_counts()
class_distribution.plot(kind='bar', color='green', edgecolor='black')
plt.title('Class Distribution')
plt.xlabel('Class Labels')
plt.ylabel('Count')
plt.show()
def visualize(audio_file_path):
audio_data, sample_rate = librosa.load(audio_file_path)
print(audio_data)
print(sample_rate)
plt.figure(figsize=(12,4))
librosa.display.waveshow(audio_data, sr = sample_rate)
file = "UrbanSound8K/audio/fold5/100852-0-0-0.wav"
ipd.Audio(file)
visualize(file)
[-5.8207661e-11 -2.2919266e-10 7.2759576e-11 ... 7.3682986e-02 1.6879775e-02 2.1070618e-02] 22050
file = "UrbanSound8K/audio/fold10/100648-1-0-0.wav"
ipd.Audio(file)
visualize(file)
[-6.9849193e-09 -3.2596290e-09 -3.7252903e-09 ... 1.8561384e-02 2.6891200e-02 3.4412306e-02] 22050
file = "UrbanSound8K/audio/fold1/15564-2-0-0.wav"
ipd.Audio(file)
visualize(file)
[-2.5611371e-08 -2.5727786e-08 9.9127647e-08 ... -1.2294231e-03 1.9766562e-02 8.7687606e-04] 22050
file = "UrbanSound8K/audio/fold1/7383-3-0-0.wav"
ipd.Audio(file)
visualize(file)
[ 3.4924597e-10 3.4924597e-10 4.6566129e-10 ... -7.9498515e-03 -7.7366987e-03 -8.0531817e-03] 22050
file = "UrbanSound8K/audio/fold3/103199-4-0-0.wav"
ipd.Audio(file)
visualize(file)
[-5.4569682e-12 0.0000000e+00 0.0000000e+00 ... -1.3928816e-01 -1.5356672e-01 -1.2940323e-01] 22050
file = "UrbanSound8K/audio/fold10/102857-5-0-0.wav"
ipd.Audio(file)
visualize(file)
[ 0.04120485 0.05975429 0.0499529 ... -0.16023785 -0.15017799 -0.15818192] 22050
file = "UrbanSound8K/audio/fold1/7061-6-0-0.wav"
ipd.Audio(file)
visualize(file)
[-7.4505806e-09 2.9802322e-08 4.8428774e-08 ... 1.0127544e-05 2.3271263e-05 7.0009992e-06] 22050
file = "UrbanSound8K/audio/fold1/103074-7-0-0.wav"
ipd.Audio(file)
visualize(file)
[0.00172808 0.00507184 0.00622941 ... 0.02601299 0.02759236 0.02479804] 22050
file = "UrbanSound8K/audio/fold7/102853-8-0-0.wav"
ipd.Audio(file)
visualize(file)
[0.05394325 0.07814638 0.05879006 ... 0.0597401 0.0812359 0.11938579] 22050
file = "UrbanSound8K/audio/fold1/21684-9-0-7.wav"
ipd.Audio(file)
visualize(file)
[ 0.01116233 0.01808932 0.01532043 ... -0.08766752 -0.10189103 -0.11817991] 22050